# coding: utf-8
# File   :  log_control
# Author :  wangsheng
# @Time  :  2025/5/7 下午2:31
import os
import sys

from loguru import logger
import time
from pathlib import Path
from common.setting import ensure_path_sep


# 初始化日志系统,对logger进行一些配置
def init_logger():
    """Loguru日志配置（替换原LogHandler类）"""
    log_dir = ensure_path_sep("\\logs")
    Path(log_dir).mkdir(exist_ok=True)  # 确保日志目录存在
    # 移除默认控制台输出（如需保留可跳过）
    logger.remove()
    # 1. 控制台彩色日志配置
    logger.add(
        sink=sys.stderr,
        format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{"
               "line}</cyan> - <level>{message}</level>",
        level="DEBUG",
        colorize=True,
        backtrace=True  # 显示异常堆栈
    )
    # 2. 按级别分离日志文件（原INFO/ERROR/WARNING分文件功能）
    now = time.strftime("%Y-%m-%d")
    logger.add(
        sink=ensure_path_sep(f"\\logs\\debug_{now}.log"),
        level="DEBUG",
        encoding="utf-8",
        enqueue=True  # 线程安全
    )
    logger.add(
        sink=ensure_path_sep(f"\\logs\\error_{now}.log"),
        level="ERROR",
        encoding="utf-8",
        enqueue=True  # 线程安全
    )


# 初始化日志（建议在程序启动时调用）
# init_logger()
# 使用示例（与原代码调用方式兼容）
# if __name__ == '__main__':
#     init_logger()
#     logger.debug("调试信息")
#     logger.info("常规信息")
#     logger.warning("警告信息")
#     logger.error("错误信息")
#     logger.critical("严重错误")
#
#     @logger.catch
#     def dangerous_func():
#         return 1 / 0
#
#     dangerous_func()
